import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class Test2 {
    public static void main(String[] args) {
        int[] arr = {3,3,3,1,2,1,1,2,3,3,4};
        int[] arr2 = {4,1,1,1,3,1,7,5};
        System.out.println(totalFruit(arr));
//        Map<Integer,Integer> map = new HashMap<>();
//        map.put(1,3);
//        System.out.println(map.get(1));
//       // map.put(3,4);
//        map.remove(1,1);
//        System.out.println(map.get(1));

        //f();
       /* Map<Integer,Integer> map = new HashMap<>();
        map.put(1,3);
        map.put(3,4);
        System.out.println(map.size());*/
       /* Map<Integer,Integer> map = new HashMap<>();
        map.put(1,2);
        int tmp = map.get(1);
        //System.out.println(tmp);
        map.put(1,tmp+1);
        if(map.get(2) == null) {
            System.out.println("666");
        }
        //System.out.println(map.get(1));*/

    }

    //904.水果成篮
    public  static int totalFruit(int[] fruits) {
        int len = 0,n = fruits.length;
        Map<Integer,Integer> map = new HashMap<>();
        for(int left=0,right=0;right < n;right++) {
            //1.进窗口
            if(map.get(fruits[right]) != null) {
                int tmp = map.get(fruits[right]);
                map.put(fruits[right],tmp+1);
            }else {
                map.put(fruits[right],1);
            }
            //2.判断
            while(map.size() > 2) {
                int out = fruits[left];
                map.put(out,map.get(out)-1);
                if(map.get(out) == 0) map.remove(out);
                left++;
            }
            //3.更新结果
            len = Math.max(len,right - left + 1);
        }
        return len;
    }
}
